package completablefuture;

import java.util.concurrent.CompletableFuture;

public class CompletableFutureDemo4 {
    /*
    4、任务并行取全部
        CompletableFuture支持多个任务的并行执行，等到所有结果产生后，再进行汇总计算。
        我们可以通过 allOf() 方法来进行实现。 需要注意的是，如果任意一个任务出现异常，则返回的CompletableFuture 执行 get() 方法时会抛出异常。
    * */
    public static void main(String[] args) {
        CompletableFuture<Integer> future1 = CompletableFuture.supplyAsync(() -> 15);
        CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> 10);
        CompletableFuture<Integer> allFutures = CompletableFuture.allOf(future1, future2).thenApply(res -> {
            System.out.println("res: " + res);
            return future1.join() + future2.join();
        });
        System.out.println(allFutures.join());
    }
}
